package co.edu.uniandes.moviles.rollerjudge.logica;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;

public class Torneo {
	
	private ArrayList<Equipo> equiposParticipantes;
	private ArrayList<PruebaGrupal> pruebasGrupales;
	private ArrayList<PruebaIndividual> pruebasIndividuales;
	private String nombre;
	private Date fecha;
	private String lugar;
	private int edadMinima;
	private int edadMaxima;
	
	public Torneo(String nombre, Date fecha, int edadMinima, int edadMaxima, String lugar) {
		this.nombre = nombre;
		this.fecha = fecha;
		this.edadMinima = edadMinima;
		this.edadMaxima = edadMaxima;
		this.lugar = lugar;
		equiposParticipantes = new ArrayList<Equipo>();
		pruebasGrupales = new ArrayList<PruebaGrupal>();
		pruebasIndividuales = new ArrayList<PruebaIndividual>();
	}
	
	public ArrayList<PruebaGrupal> getPruebasGrupales() {
		return pruebasGrupales;
	}
	
	public PruebaGrupal buscarPruebaGrupal(String genero, int distancia)
	{
		
		for(int i=0;i<pruebasGrupales.size();i++)
		{
			PruebaGrupal a = pruebasGrupales.get(i);
			if(a.getGenero().equals(genero) && a.getDistancia()==distancia)
			{
				return a;
			}
				
		}
		return null;
	}
	
	public PruebaIndividual buscarPruebaIndividual(String genero, int distancia, int max, int min)
	{
		
		for(int i=0;i<pruebasIndividuales.size();i++)
		{
			PruebaIndividual a = pruebasIndividuales.get(i);
			if(a.getGenero().equals(genero) && a.getDistancia()==distancia && a.getEdadMinima()== min && a.getEdadMaxima()==max)
			{
				return a;
			}
				
		}
		return null;
	}


	public void setPruebasGrupales(ArrayList<PruebaGrupal> pruebasGrupales) {
		this.pruebasGrupales = pruebasGrupales;
	}


	public ArrayList<PruebaIndividual> getPruebasIndividuales() {
		return pruebasIndividuales;
	}


	public void setPruebasIndividuales(
			ArrayList<PruebaIndividual> pruebasIndividuales) {
		this.pruebasIndividuales = pruebasIndividuales;
	}


	public ArrayList<Equipo> getEquiposParticipantes() {
		return equiposParticipantes;
	}

	public void setEquiposParticipantes(ArrayList<Equipo> equiposParticipantes) {
		this.equiposParticipantes = equiposParticipantes;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public int getEdadMinima() {
		return edadMinima;
	}

	public void setEdadMinima(int edadMinima) {
		this.edadMinima = edadMinima;
	}

	public int getEdadMaxima() {
		return edadMaxima;
	}

	public void setEdadMaxima(int edadMaxima) {
		this.edadMaxima = edadMaxima;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getLugar() {
		return lugar;
	}

	public void setLugar(String lugar) {
		this.lugar = lugar;
	}

	public String getNombre() {
		return nombre;
	}
	
	public void inscribirEquipo(Equipo selected) {
		equiposParticipantes.add(selected);
	}
	
	public void retirarEquipo(Equipo selected) {
		equiposParticipantes.remove(selected);
	}
	
	@Override
	public String toString(){
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
		return nombre + " (" + df.format(fecha) + ") ";
	}

	public void registrarPruebaGrupal(PruebaGrupal prueba) {
		pruebasGrupales.add(prueba);
	}
	
	public void registrarPruebaIndividual(PruebaIndividual prueba) {
		pruebasIndividuales.add(prueba);
	}
	
}
